import re
import json

def parse_brace_dict(s: str, with_type_infer: bool = False):
    """
        将形如"{name:ab, age:15}"的非标准json字符串转化为json字符串
    :param s:
    :param with_type_infer: 是否自动推断类型
    :return:
    """
    if not s:
        return "{}"
    # 去掉首尾的大括号
    s = s.strip()
    if s.startswith('{') and s.endswith('}'):
        s = s[1:-1].strip()
    else:
        raise ValueError("字符串必须以 { 开头，} 结尾")

    # 匹配 key:value 模式（允许空格）
    # \s* 表示任意空白，\w+ 表示字母数字下划线组成的标识符
    pattern = r'(\w+)\s*:\s*([^,]+)'
    matches = re.findall(pattern, s)

    result = {}
    for key, value in matches:
        value = value.strip()
        if with_type_infer:
            # 尝试转换为 int 或 float，否则保留为字符串
            if value.isdigit():
                result[key] = int(value)
            elif '.' in value and value.replace('.', '', 1).isdigit():
                result[key] = float(value)
            else:
                result[key] = value  # 保持为字符串
        else:
            result[key] = value  # 保持为字符串
    return json.dumps(result)